Systems, devices, and methods for protecting access privacy of cached content

ABSTRACT

Embodiments relate to systems, devices, and computer-implemented methods for preventing determination of previous access of sensitive content by receiving, from a user, a request for content at a device in an information centric network, where a cached version of the content is locally stored at the device; initiating a time delay based on a determination that the user has not previously requested the content; and transmitting the cached version of the content to the user after the time delay.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of the co-pending U.S. patentapplication titled, “SYSTEMS, DEVICES, AND METHODS FOR PROTECTING ACCESSPRIVACY OF CACHED CONTENT,” filed on May 5, 2014 and having applicationSer. No. 14/269,484, which claims priority benefit of the United StatesProvisional patent application titled, “SYSTEMS, DEVICES, AND METHODSFOR PROTECTING ACCESS PRIVACY OF CACHED CONTENT,” filed on May 7, 2013and having Application No. 61/820,372. The subject matter of theserelated applications is hereby incorporated herein by reference.

BACKGROUND

Information Centric Networks (hereinafter, “ICN”) have been proposed asan alternative approach to a computer network architecture. ICNs aredesigned around the principle that a user should be allowed to focus onthe content to be retrieved, not on the physical location of thecontent.

An ICN can allow for the retrieval of content from content servers basedon the name of the content. For example, a request for content can bepassed up a chain of routers until the request is received by a contentserver that stores the content. The content server can send the contentback to the user using the same path as the request. Additionally, therouters along the path between the requestor and the content server cancache the content for future requests. Accordingly, future requestorsfollowing parts of the same path will be able to retrieve the cachedcontent and avoid transmission delays.

However, the universal caching mechanism in an ICN poses a privacy risk.In particular, the time difference between data response for cached dataand uncached data can be used to infer whether a near-by user haspreviously requested the same content.

Accordingly, ICN technologies may benefit from techniques for protectingaccess privacy of cached content.

SUMMARY

The present disclosure relates generally to methods, systems, andcomputer readable media for providing these and other improvements toinformation centric network technologies.

Implementations of the present teachings relate to methods, systems, andcomputer-readable storage media for preventing timing determinationsbased on cached content in an information centric network. In someembodiments, a computing device can receive, at the computing device, arequest for content from a user, where a cached version of the contentis locally stored at the computing device. The computing device caninitiate a time delay based on a determination that the user has notpreviously requested the content, and transmit the cached version of thecontent to the user after the time delay. In some embodiments, the timedelay may be initiated based on determination that the content isdetermined to be sensitive content and/or is associated with a privacymode.

In other embodiments, a computing device can receive a request forcontent via a port of the computing device, where a cached version ofthe content is locally stored at the computing device, and the port isuniquely assigned to an access point of one or more users. The computingdevice can initiate a time delay based on a determination that thecontent has not been previously requested via the port of the computingdevice, and transmit the cached version of the content to a user via theaccess point after the time delay. In some embodiments, the time delaymay be initiated based on determination that the content is determinedto be sensitive content and/or is associated with a privacy mode.

In further embodiments, a computing device can receive a request forcontent via a port of the computing device, where a cached version ofthe content is locally stored, relative to the computing device, therequest includes an indication that the content has not been previouslyrequested by a user associated with the request, and the port isuniquely assigned to an access point of one or more users. The computingdevice can initiate a time delay based on the indication that thecontent has not been previously requested by the user, and transmit thecached version of the content to the user via the access point after thetime delay. In some embodiments, the time delay may be initiated basedon determination that the content is determined to be sensitive contentand/or is associated with a privacy mode.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate various embodiments of thepresent disclosure and together, with the description, serve to explainthe principles of the present disclosure. In the drawings:

FIG. 1 is a diagram depicting a schematic of an example informationcentric network, consistent with certain disclosed embodiments;

FIG. 2 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments;

FIG. 3 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments;

FIG. 4 is a diagram depicting a schematic of an example informationcentric network, consistent with certain disclosed embodiment;

FIG. 5 is a flow diagram illustrating an example method of flaggingrequests for sensitive content, consistent with certain disclosedembodiments;

FIG. 6 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments; and

FIG. 7 is a diagram illustrating an example hardware system forprotecting access privacy of cached content, consistent with certaindisclosed embodiments.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings.Wherever possible, the same reference numbers are used in the drawingsand the following description refers to the same or similar parts. Whileseveral example embodiments and features of the present disclosure aredescribed herein, modifications, adaptations, and other implementationsare possible, without departing from the spirit and scope of the presentdisclosure. Accordingly, the following detailed description does notlimit the present disclosure. Instead, the proper scope of thedisclosure is defined by the appended claims.

FIG. 1 is a diagram depicting a schematic of an example informationcentric network, consistent with certain disclosed embodiments. Inparticular, FIG. 1 depicts an ICN 100 that includes a content server110, routers 120 (R1), 130 (R2), and 140 (R3), and users 150 (U1), 160(U2), and 170 (U3). Content server 110, routers 120, 130, and 140, andusers 150, 160, and 170 can be referred to as nodes of ICN 100.

As used herein, an Information Centric Network (ICN) can generally referto any type of multi-level computer network that can transfer contentrequests and content between levels, and where content can be cached atdifferent levels in the network.

Additionally, as used herein, content can refer to any data and/orinformation that can be transmitted over a network, such as, forexample, network packets, data structures, programs, computer files,etc.

Content server 110 can represent any type of one or more computingdevices that can store content, receive requests for content, andtransmit content to one or more routers and/or users in response to therequests. Content server 110 is depicted in ICN 100 as connected torouter 120.

As used herein, depictions and reference to two nodes being connectedcan indicate that the two nodes are capable of communication andtransmission of data via one or more direct and/or indirect connections.For example, two connected nodes can be directly connected via anEthernet cable, can be indirectly connected via one or more routers, canbe connected via a wired and/or wireless network, can be connected viathe Internet, etc.

Router 120, router 130, and router 140 can represent any type ofcomputing devices that can perform algorithms and logic for initiatingtime delays, as disclosed herein, can receive and forward requests forcontent from users, and can receive, cache, and forward content from oneor more content servers and/or routers. In some embodiments, a routercan be a network router, a network switch, a network hub, a networkbridge, a proxy server, etc. Router 120 is depicted in ICN 100 asconnected to content server 110, router 130, and router 140. Router 130is depicted as connected to router 120 and user 170. Router 140 isdepicted as connected to router 120, user 160, and user 150. In ICN 100,routers 130 and 140 can be considered “edge routers,” where an edgerouter, relative to a user, is the primary router connected to the userthat forwards the users requests, directly or indirectly, to a contentserver.

In some embodiments, user 150, user 160, and user 170 can representclient computing devices of users of ICN 100. In other embodiments,users 150, 160, and 170 can represent access points to ICN 100 forusers. For example, each of users 150, 160, and 170 can represent theclosest connecting point of one or more users to ICN 100, such as arouter or any other type of connected computing device. User 150 anduser 160 are depicted in ICN 100 as connected to router 140. User 170 isdepicted as connected to router 130.

Accordingly, based on the principals of ICNs, requests for content fromusers 150, 160, and 170 are first transferred to routers 130 and 140.Routers 130 and 140 forward the requests to router 120, and router 120forwards the requests to content server 110. Content server 110 thensends the requested content to router 120. Router 120 can cache thecontent and then send the content to either router 130 or router 140,depending on the source of the request. Router 130 and 140 can cache thecontent and then send the content to users 150, 160, and 170.

When future requests for content that has been cached are received byany of the routers, the router can respond to the request with thecached content instead of transferring the request up the chain and/orto content server 110.

For example, user 150 can request specified content by sending therequest to router 140. If router 140 does not have the specified contentcached, it would send the request up the chain to router 120. If router120 does not have the specified content cached, it would send therequest up the chain to content server 110. Content server 110 wouldrespond to the request by sending the specified content to router 120.Router 120 can cache the content and send it to router 140. Router 140can cache the content and send it to user 150.

Subsequently, user 160 can request the same specified content by sendingthe request to router 140. Because router 140 has the content cached itcan send the specified content to user 160 without having to transferthe request up the chain.

User 170 can also request the same specified content by sending therequest to router 130. Router 130 would not have received and cached thecontent based on user 150's request because router 130 is not betweenuser 150 and content server 110. Accordingly, if router 130 does nototherwise have the specified content cached, it would send the requestup the chain to router 120. Because router 120 has the content cached itcan send the specified content to router 130 without having to transferthe request up the chain. Router 130 can cache the content and send itto user 170.

In the above example, user 160 and user 170 would typically receive thecontent quicker than if the content was retrieved from the contentserver. Additionally, by timing content requests user 160 and user 170may be able to determine when content is cached and when content isretrieved from content server 110. Accordingly, users 160 and 170 coulddetermine that content has been previously accessed and possibly bywhich users. For example, user 160 could determine that the content wascached at router 140 by determining that the time from request toreceipt was only enough to hop from one node and back. If user 160 wasaware that user 150 was the only other user connected to router 140 andthat user 160 had not accessed the content previously, user 160 wouldnow know that user 150 had previously accessed the content.

Accordingly, as an additional example to prevent such timingdeterminations, user 150 can request sensitive content by sending therequest to router 140 along with an indication that the request isprivate. Router 140 could transfer the request and cache the sensitivecontent when it is received, as in the example above.

Subsequently, user 160 can request the same sensitive content by sendingthe request to router 140. Because router 140 has the content cached itcan send the sensitive content to user 160 without having to transferthe request up the chain. However, because user 150 indicated that therequest was to be private, router 140 can initiate a time delay beforesending the sensitive content to user 160. If user 160 requests thesensitive content again, router 140 can send the sensitive contentagain, but this time without initiating the time delay. User 160 wouldnot be able to determine if another user had requested the sensitivecontent based on the second request because user 160 would not know ifthe sensitive content was cached when another user requested it or whenuser 160 requested it the first time.

The example depicted in FIG. 1 is merely for the purpose ofillustration, and is not intended to be limiting. For example,additional users, routers, and content servers may be used as part of anICN. Additionally, the structure of the ICN depicted is merely asimplified example of an ICN, consistent with certain disclosedembodiments, but such an example is not intended to be limiting.

FIG. 2 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments. The example method may be performed by a router in an ICN,such as, for example, routers 120, 130, and 140 in FIG. 1.

The process can begin in 200 when a computing device (e.g. a router inan ICN) receives a request for sensitive content from a first user. Therequest can be received directly from the first user or via anothercomputing device (e.g. another router). For the description of FIG. 2, auser can refer to either a client computing device of a user or anaccess point of one or more users.

In some embodiments, the computing device can determine that the contentis sensitive content based on an indication from the first user. Forexample, the request can include a privacy mode flag that the first userused to indicate that the content is sensitive and/or that privacy forthe request is desired. In other embodiments, the computing device maydetermine that the content is sensitive content based on the contentitself, such as by matching a content identifier to a list of content tobe treated as sensitive, or by receiving an indication from a contentserver included with the content when the content is eventually receivedfrom the content server.

The computing device can store the indication that the content issensitive content by associating, for example, the request, the content(when received), and/or a content identifier with the indication.

In some embodiments, the computing device can check its cache todetermine if the content is cached. For example, the computing devicecan attempt to match the content identifier with identifiers of thecontent that is cached. If the content is not cached, in 210, thecomputing device can transfer the request to a content server (e.g.router 120 to content server 110 in FIG. 1) or to a secondary router upthe chain towards a content server (e.g. router 140 to router 120).

If the computing device transfers the request to a secondary router, thesecondary router can perform the same or similar steps as described inregard to FIG. 2. Accordingly, the secondary router can either transferthe request to a tertiary router, and so on, or to the content server.

In 220, the computing device can receive the content directly from thecontent server or from the content server via the secondary router. Thecomputing device can then cache the content for future requests and cantransfer the content to the first user directly or through the computingdevice that transferred the request.

In 230, the computing device can receive a request for the sensitivecontent from a second user. The request can be received directly fromthe second user or via another computing device (e.g. another router).

The computing device can check its cache to determine if the content iscached. For example, the computing device can attempt to match thecontent identifier with identifiers of the content that is cached.Because the computing device has previously cached the sensitivecontent, and assuming the cached sensitive content has not beenpreviously cleared, the computing device can determined that the contentis cached.

Additionally, the computing device can determine that the cached contentis sensitive content by determining that the indication that the contentis sensitive content is associated with, for example, the content, thecontent identifier, and/or the user that originally requested thecontent.

In 240, based on the determination that the content is sensitive, thecomputing device can determine if this is the first request for thesensitive content by the second user. In some embodiments, the computingdevice can maintain a list of users and content requested by users. Forexample, the users can be identified based on a user identifier, a useraccount identifier, an Internet Protocol (IP) address, and/or a mediaaccess control (MAC) address, and the content can be identified based ona content identifier.

In other embodiments, the computing device can maintain a list of portsand the content requested via the ports. For example, a user can be anaccess point of multiple users and the access point can be assigned to aunique port of the computing device. Accordingly, the computing devicecan determine if a request via the unique port is the first request forthe sensitive content via the unique port (i.e. via the access point).

If, in 240, the computing device determines that the second user has notpreviously requested the sensitive content, the computing device can, in250, initiate a time delay. For example, the computing device cancompute and initiate the time delay as discussed below in the exampledescribed with regard to FIG. 3.

After the time delay, in 260, the computing device can transfer thecached sensitive content to the second user directly or through thecomputing device that transferred the request.

If, in 240, the computing device determines that the second user haspreviously requested the sensitive content, no time delay may benecessary, and the computing device can immediately transfer the cachedsensitive content to the second user directly or through the computingdevice that transferred the request.

While the steps depicted in FIG. 2 have been described as performed in aparticular order, the order described is merely example, and variousdifferent sequences of steps can be performed, consistent with certaindisclosed embodiments. Additionally, the steps are described as discretesteps merely for the purpose of explanation, and, in some embodiments,multiple steps may be performed simultaneously and/or as part of asingle computation. Further, the steps described are not intended to beexhaustive or absolute, and various steps can be inserted or removed.

FIG. 3 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments. The example method may be performed by a router in an ICN,such as, for example, routers 120, 130, and 140 in FIG. 1.

The process can begin in 300 when a computing device (e.g. a router inan ICN) receives a time stamped (TS0) request for sensitive content froma first user. For the description of FIG. 3, a user can refer to eithera client computing device of a user or an access point of one or moreusers. Additionally, for the purposes of this example, the computingdevice can receive the request directly from the first user (i.e. one“hop” from the first user).

In some embodiments, the computing device can determine that the contentis sensitive content based on an indication from the first user. Forexample, the request can include a privacy mode flag that the first userused to indicate that the content is sensitive and/or that privacy forthe request is desired. In other embodiments, the computing device maydetermine that the content is sensitive content based on the contentitself, such as by matching a content identifier to a list of content tobe treated as sensitive, or by receiving an indication from a contentserver included with the content when the content is eventually receivedfrom the content server.

The computing device can store the indication that the content issensitive content by associating, for example, the request, the content(when received), and/or a content identifier with the indication.

In some embodiments, the computing device can check its cache todetermine if the content is cached. For example, the computing devicecan attempt to match the content identifier with identifiers of thecontent that is cached.

In 305, the computing device can record the time of receipt of therequest (TS1). The computing device can record this time before or afterdetermining that the content is not cached. In some embodiments, thecomputing device may not need to record the time of receipt if thesensitive content is already cached because the time delay (D) may havealready been computed when the content was cached.

In 310, the computing device can compute the amount of time of a one-hopdelay, which is the time between sending a request from a first node andreceiving the request at a second, adjacent node. The computing devicecan subtract the timestamp of the request (TS0) from the time of receiptof the request (TS1) to compute the one-hop delay (TD0):

TD0=TS1−TS0.

In 315, the computing device can transfer the request to a contentserver or to a secondary router up the chain towards a content server(e.g. router 140 to router 120).

If the computing device transfers the request to a secondary router, thesecondary router can perform similar steps as described in FIG. 3.However, the secondary router would have to account for multiple hops indetermining the one-hop delay. The secondary router can either transferthe request to a tertiary router, and so on, or to the content server.

In some embodiments, the secondary router can determine the one-hopdelay based on an acknowledgement received from the tertiary router thatis sent by the tertiary router upon receipt of the request. Thesecondary router can determine the one-hop delay to be the differencebetween the time the request is sent to the tertiary router and the timethe acknowledgement is received from the tertiary router.

In other embodiments, if the request is transferred from the secondaryrouter directly to the content server, the secondary router candetermine the one-hop delay based on when the content is received fromthe content server as opposed to when an acknowledgement is received.

In 320, the computing device can receive the content directly from thecontent server or from the content server via the secondary router andcan record the time of receipt of the sensitive content (TS2).

In 325, the computing device can compute the retrieval time (TDX) forthe content. The computing device can subtract the time of receipt ofthe request (TS1) from the time of receipt of the sensitive content(TS2) to compute the retrieval time (TDX):

TDX=TS2−TS1.

The computing device can then compute the estimated number of hops tothe content server (N) using the retrieval time (TDX) and the one-hopdelay (TD0):

N=TDX/(2*TD0+1).

In some embodiments, the estimated number of hops to the content server(N) may be rounded to the nearest whole integer. In other embodiments,the estimated number of hops to the content server (N) can be truncatedor, alternatively, rounded up to the nearest whole integer.

In 335, the computing device can cache the content for future requestsand can transfer the content to the first user.

In 340, the computing device can receive a request for the sensitivecontent from a second user. For the purposes of this example, thecomputing device can receive the request directly from the second user(i.e. one “hop” from the second user).

The computing device can check its cache to determine if the content iscached. For example, the computing device can attempt to match thecontent identifier with identifiers of the content that is cached.Because the computing device has previously cached the sensitivecontent, and assuming the cached sensitive content has not beenpreviously cleared, the computing device can determined that the contentis cached.

Additionally, the computing device can determine that the cached contentis sensitive content by determining that the indication that the contentis sensitive content is associated with, for example, the content, thecontent identifier, and/or the user that originally requested thecontent.

In 345, based on the determination that the content is sensitive, thecomputing device can determine if this is the first request for thesensitive content by the second user.

If, in 345, the computing device determines that the second user has notpreviously requested the sensitive content, the computing device can, in350, compute and initiate a time delay. If the estimated number of hops(N) to the content server is one, the time delay (D) can be, in someembodiments, zero because the retrieval time is minimal and addingunnecessary time delays can have an adverse effect on performance:

IF N=1,D=0.

In other embodiments, the time delay (D) can be set to be a time at ornear the retrieval time (TDX):

IF N=1,D≈TDX

or set to be a time between zero and the retrieval time (TDX) (e.g.randomly) to balance performance and privacy:

IF N=1,0<D<TDX.

If the estimated number of hops (N) to the content server is greaterthan one the time delay (D) can be, in some embodiments, greater thantwo times the one-hop delay (2*TD0) but less than the retrieval time(TDX) (e.g. selected randomly between 2*TD0 and TDX):

IF N>1,2*TD0)<D<TDX.

Two times the one-hop delay (TD0) represents the estimated retrievaltime from a content server that is one hop from the computing device.Accordingly, to balance performance and privacy, the time delay will beless than the time to retrieve the content from the content server butthe second user would not be able to determine that the sensitivecontent is cached at the computing device using a timing attack.

After the time delay, in 355, the computing device can transfer thecached sensitive content to the second user. In some embodiments, thecomputing device may store the computed time delay and use it for anyfuture first requests from the same user for sensitive content that isalready cached at the computing device. In other embodiments, thecomputing device may use the same computed time delay for other usersthat are one-hop from the computing device. In still furtherembodiments, the computing device may calculate the time delay each timea first request for sensitive content that is already cached isreceived.

If, in 345, the computing device determines that the second user haspreviously requested the sensitive content, no time delay may benecessary, and the computing device can immediately transfer the cachedsensitive content to the second user directly or through the computingdevice that transferred the request.

While the steps depicted in FIG. 3 have been described as performed in aparticular order, the order described is merely example, and variousdifferent sequences of steps can be performed, consistent with certaindisclosed embodiments. Additionally, the steps are described as discretesteps merely for the purpose of explanation, and, in some embodiments,multiple steps may be performed simultaneously and/or as part of asingle computation. Further, the steps described are not intended to beexhaustive or absolute, and various steps can be inserted or removed.

FIG. 4 is a diagram depicting a schematic of an example informationcentric network, consistent with certain disclosed embodiments. Inparticular, FIG. 4 depicts an ICN 400 that includes a content server410, routers 420 (R1) and 430 (R2), access points 440 (AP1) and 450(AP2), and users 460 (U1), 470 (U2), and 480 (U3). Content server 410,routers 420, and 430, access points 440 and 450, and users 460, 470, and480 can be referred to as nodes of ICN 400.

Content server 410 can represent any type of one or more computingdevices that can store content, receive requests for content, andtransmit content to one or more routers and/or users in response to therequests. Content server 410 is depicted in ICN 400 as connected torouter 420.

Router 420 and router 430 can represent any type of computing devicesthat can perform algorithms and logic for initiating time delays, asdisclosed herein, can receive and forward requests for content fromusers, and can receive, cache, and forward content from one or morecontent servers and/or routers. Router 420 is depicted in ICN 400 asconnected to content server 410 and router 430. Router 430 is depictedas connected to router 420 and access points 440 and 450.

Access points 440 and 450 can represent any type of computing devicethat provides one or more users access to an ICN. For example, an accesspoint can be a router for a local area network that includes multipledevices, an internet server provider, a wireless access point, etc.Access point 440 is depicted in ICN 400 as connected to router 430 anduser 480. Access point 450 is depicted in ICN 400 as connected to router430, user 470, and user 460. Access points 440 and 450, as depicted inICN 400, can represent the closest access points to ICN 400 for users460, 470, and 480.

In some embodiments, user 460, user 470, and user 480 can representclient computing devices of users of ICN 400. User 460 and user 470 aredepicted in ICN 400 as connected to access point 450. User 480 isdepicted as connected to access point 440.

Accordingly, based on the principals of ICNs, requests for content fromusers 460, 470, and 480 are first transferred to access points 440 and450. Access points 440 and 450 forward the requests to router 430, whichforwards requests to router 420, and router 420 forwards the requests tocontent server 410. Content server 410 then sends the requested contentto router 420. Router 420 can cache the content and then send thecontent to router 430. Router 430 can cache the content and send thecontent to either access point 440 or access point 450, depending on thesource of the request.

When future requests for content that has been cached are receive by anyof the routers, the router can respond to the request with the cachedcontent instead of transferring the request up the chain and/or tocontent server 410.

In ICN 400, access points 440 and 450 can perform algorithms and logicto assist the routers in preventing timing determinations on sensitivecontent.

As an example to prevent such timing determinations, user 460 canrequest sensitive content by sending the request through access point450 to router 430 along with an indication that the request is private.Router 430 could transfer the request and cache the sensitive contentwhen it is received.

Subsequently, user 470 can request the same sensitive content by sendingthe request through access point 450 to router 430. Access point 450 candetermined that user 470 has not previously accessed the sensitivecontent and flag the request as being a first time request from a userbefore transferring the request to router 430. Because router 430 hasthe content cached it can send the sensitive content to user 470 withouthaving to transfer the request up the chain. However, because user 460indicated that the request was to be private and the request was flaggedas a first time request by access point 450, router 430 can initiate atime delay before sending the sensitive content to user 470. If user 470requests the sensitive content again, router 430 can send the sensitivecontent again, but this time access point 450 would not flag the requestand the sensitive content would be sent without initiating the timedelay. User 470 would not be able to determine if another user hadrequested the sensitive content based on the second request because user470 would not know if the sensitive content was cached when another userrequested it or when user 470 requested it the first time. Additionally,router 430 would not have to maintain a list of which users accessedwhich content, but can use the flags created by the access points.

In some embodiments, routers can maintain a list of which access pointshave transferred requests for specific content and initiate time delaysif the request is a first request via an access point for cached contenteven if the request is not flagged.

The example depicted in FIG. 4 is merely for the purpose ofillustration, and is not intended to be limiting. For example,additional users, access points, routers, and content servers may beused as part of an ICN. Additionally, the structure of the ICN depictedis merely a simplified example of an ICN, consistent with certaindisclosed embodiments, but such an example is not intended to belimiting.

FIG. 5 is a flow diagram illustrating an example method of flaggingrequests for sensitive content, consistent with certain disclosedembodiments. The example method may be performed by an access point toan ICN, such as, for example, access points 440 and 450 as described inregard to FIG. 4.

The process can begin in 500 when a computing device (e.g. an accesspoint in an ICN) receives a request for sensitive content from a user.The request can be received directly from the user or via anothercomputing device (e.g. another router).

In some embodiments, the computing device can determine that the contentis sensitive content based on an indication from the first user. Forexample, the request can include a privacy mode flag that the first userused to indicate that the content is sensitive and/or that privacy forthe request is desired. In other embodiments, the computing device maydetermine that the content is sensitive content based on the contentitself, such as by matching a content identifier to a list of content tobe treated as sensitive, or by receiving an indication from a contentserver included with the content when the content is eventually receivedfrom the content server. In further embodiments, the computing devicemay not determine whether the content is sensitive and may flag allfirst-time requests for content from a particular user.

The computing device may store the indication that the content issensitive content by associating, for example, the request, the content(when received), and/or a content identifier with the indication.

In 510, the computing device can determine if this is the first requestfor the sensitive content by the user. In some embodiments, thecomputing device can maintain a list of users and content requested byusers. For example, the users can be identified based on a useridentifier, a user account identifier, an Internet Protocol (IP)address, and/or a media access control (MAC) address, and the contentcan be identified based on a content identifier.

If, in 510, the computing device determines that the user has notpreviously requested the sensitive content, the computing device can, in520, flag the request. In some embodiments, the commuting device mayonly flag the request if the computing device determines that therequested content is sensitive.

If, in 510, the computing device determines that the user has previouslyrequested the sensitive content, the content may not be flagged.

In 530, the computing device can transfer the flagged or not flaggedrequest to a router in the ICN. In 540, the computing device can receivethe sensitive content from the router in response to the request. In550, the computing device can transfer the sensitive content to theuser.

While the steps depicted in FIG. 5 have been described as performed in aparticular order, the order described is merely example, and variousdifferent sequences of steps can be performed, consistent with certaindisclosed embodiments. Additionally, the steps are described as discretesteps merely for the purpose of explanation, and, in some embodiments,multiple steps may be performed simultaneously and/or as part of asingle computation. Further, the steps described are not intended to beexhaustive or absolute, and various steps can be inserted or removed.

FIG. 6 is a flow diagram illustrating an example method of initiating atime delay for cached content, consistent with certain disclosedembodiments. The example method may be performed by a router in an ICN,such as, for example, routers 420 and 430 in FIG. 4, where the ICNincludes one or more access points that perform the steps described inregard to FIG. 5.

The process can begin in 600 when a computing device (e.g. a computerdevice in an ICN) receives a request for sensitive content via an accesspoint. The access point (e.g. another router) can be an access point tothe ICN for multiple users, and the request may have originated from oneof the users.

In some embodiments, the computing device can determine that the contentis sensitive content based on an indication from the user and/or theaccess point. For example, the request can include a privacy mode flagthat the user used to indicate that the content is sensitive and/or thatprivacy for the request is desired. In other embodiments, the computingdevice may determine that the content is sensitive content based on thecontent itself, such as by matching a content identifier to a list ofcontent to be treated as sensitive, or by receiving an indication from acontent server included with the content when the content is eventuallyreceived from the content server.

The computing device can store the indication that the content issensitive content by associating, for example, the request, the content(when received), and/or a content identifier with the indication.

In some embodiments, the computing device can check its cache todetermine if the content is cached. For example, the computing devicecan attempt to match the content identifier with identifiers of thecontent that is cached. If the content is not cached, in 610, thecomputing device can transfer the request to a content server (e.g.router 420 to content server 410 in FIG. 4) or to a secondary router upthe chain towards a content server (e.g. router 430 to router 420).

If the computing device transfers the request to a secondary router, thesecondary router can perform the same or similar steps as described inregard to FIG. 6. Accordingly, the secondary router can either transferthe request to a tertiary router, and so on, or to the content server.

In 620, the computing device can receive the content directly from thecontent server or from the content server via the secondary router. Thecomputing device can then cache the content for future requests and cantransfer the content to the access point.

In 630, the computing device can receive a second request for thesensitive content from the access point. The request may have originatedfrom a different user than the first request.

The computing device can check its cache to determine if the content iscached. For example, the computing device can attempt to match thecontent identifier with identifiers of the content that is cached.Because the computing device has previously cached the sensitivecontent, and assuming the cached sensitive content has not beenpreviously cleared, the computing device can determined that the contentis cached.

Additionally, the computing device may determine that the cached contentis sensitive content by determining that the indication that the contentis sensitive content is associated with, for example, the content, thecontent identifier, and/or the user that originally requested thecontent.

In 640, the computing device can determine if the request has beenflagged by the access point. In some embodiments, the computing devicemay only determine if the request has been flagged, while, in otherembodiments, the computing device may also determine if the request is afirst request received from that particular access point. Accordingly,in some embodiments, the computing device can maintain a list of accesspoints and content requested via the access points. For example, theaccess points can be identified based on an access point identifier, anInternet Protocol (IP) address, and/or a media access control (MAC)address, and the content can be identified based on a contentidentifier.

If, in 640, the computing device determines that the content is flagged,the computing device can, in 650, initiate a time delay. For example,the computing device can compute and initiate the time delay asdiscussed in the example described with regard to FIG. 3.

After the time delay, in 660, the computing device can transfer thecached sensitive content to the access point.

If, in 640, the computing device determines that the content is notflagged, in some embodiments, no time delay may be necessary, and thecomputing device can immediately transfer the cached sensitive contentto the access point. In further embodiments, the computing device mayonly immediately transfer the cached sensitive content if the request isnot a first request received from that particular access point.

While the steps depicted in FIG. 6 have been described as performed in aparticular order, the order described is merely example, and variousdifferent sequences of steps can be performed, consistent with certaindisclosed embodiments. Additionally, the steps are described as discretesteps merely for the purpose of explanation, and, in some embodiments,multiple steps may be performed simultaneously and/or as part of asingle computation. Further, the steps described are not intended to beexhaustive or absolute, and various steps can be inserted or removed.

FIG. 7 is a diagram illustrating an example hardware system forprotecting access privacy of cached content, consistent with certaindisclosed embodiments. The example system 700 includes example systemcomponents that may be used. The components and arrangement, however,may be varied.

A computer 701 may include a processor 710, a memory 720, storage 730,and input/output (I/O) devices (not pictured). The computer 701 may beimplemented in various ways and can be configured to perform any of theembodiments described above. For example, the computer 701 may be ageneral purpose computer, a router, an edge router, an access point, acontent server, an origin server, a mainframe computer, any combinationof these components, or any other appropriate computing device. Thecomputer 701 may be standalone, or may be part of a subsystem, whichmay, in turn, be part of a larger system.

The processor 710 may include one or more known processing devices, suchas a microprocessor from the Intel Core™ family manufactured by Intel™,the Phenom™ family manufactured by AMD™, or any of various processorsmanufactured by Sun Microsystems. Memory 720 may include one or morestorage devices configured to store information used by processor 710 toperform certain functions related to disclosed embodiments. Storage 730may include a volatile or non-volatile, magnetic, semiconductor, tape,optical, removable, non-removable, or other type of computer-readablemedium used as a storage device.

In one embodiment, memory 720 may include one or more programs orsubprograms that may be loaded from storage 730 or elsewhere that, whenexecuted by computer 701, perform various procedures, operations, orprocesses consistent with disclosed embodiments. For example, memory 720may include an access privacy program 725 for protecting access privacyof cached contents according to disclosed embodiments. Memory 720 mayalso include other programs that perform other functions and processes,such as programs that provide communication support, Internet access,etc. The access privacy program 725 may be embodied as a single program,or alternatively, may include multiple sub-programs that, when executed,operate together to perform the function of the access privacy program725 according to disclosed embodiments.

The computer 701 may communicate over a link with a network 760. Forexample, the link may be a direct communication link, a LAN, a WAN, orother suitable connection. The network 760 may include the internet, aswell as other systems. For example, in embodiments, the network can bepart of an ICN.

The computer 701 may include one or more I/O devices (not pictured) thatallow data to be received and/or transmitted by the computer 701. I/Odevices may also include one or more digital and/or analog communicationinput/output devices that allow the computer 701 to communicate withother machines and devices. I/O devices may also include input devicessuch as a keyboard or a mouse, and may include output devices such as adisplay or a printer. The computer 701 may receive data from externalmachines and devices and output data to external machines and devicesvia I/O devices. The configuration and number of input and/or outputdevices incorporated in I/O devices may vary as appropriate for variousembodiments.

In embodiments, the computer 701 may also be communicatively connectedto one or more data repositories.

Example uses of the system 700 can be described by way of example withreference to the example embodiments described above.

Example uses of the time delaying methods described above can beutilized in any type of communication network, including ICNs, orcomputer system in which privacy of cached data is desired and timingdeterminations are a potential threat.

While the teachings has been described with reference to the exampleembodiments thereof, those skilled in the art will be able to makevarious modifications to the described embodiments without departingfrom the true spirit and scope. The terms and descriptions used hereinare set forth by way of illustration only and are not meant aslimitations. In particular, although the method has been described byexamples, the steps of the method may be performed in a different orderthan illustrated or simultaneously. Furthermore, to the extent that theterms “including”, “includes”, “having”, “has”, “with”, or variantsthereof are used in either the detailed description and the claims, suchterms are intended to be inclusive in a manner similar to the term“comprising.” As used herein, the term “one or more of” with respect toa listing of items such as, for example, A and B, means A alone, Balone, or A and B. Those skilled in the art will recognize that theseand other variations are possible within the spirit and scope as definedin the following claims and their equivalents.

What is claimed is:
 1. A computer-implemented method, comprising:receiving, at a first device, a request for content from a user device,wherein a cached version of the content is locally stored at the device;determining that the user device has not previously requested thecontent from the first device; initiating a time delay in response todetermining that the user device has not previously requested thecontent from the first device; and transmitting the cached version ofthe content to the user device once the time delay terminates.
 2. Thecomputer-implemented method of claim 1, wherein: a second devicedetermines that the user device has not previously requested the contentfrom the first device; and the request for the content is first receivedvia the second device and includes an indication that the user devicehas not previously requested the content.
 3. The computer-implementedmethod of claim 1, wherein: the user device comprises an access point,communications from the user device are assigned to a first port; anddetermining that the user device has not previously requested thecontent comprises determining that the content has not been previouslyrequested via the port.
 4. The computer-implemented method of claim 1,further comprising determining that the content is associated with aprivacy mode.
 5. The computer-implemented method of claim 1, wherein thefirst device comprises an edge router relative the user device.
 6. Thecomputer-implemented method of claim 1, further comprising: receiving,at the first device, an initial request for the content from a seconduser device before the content is locally cached at the first device;transmitting the initial request for the content to a second device;receiving the content from the second device; storing the content in acache memory; and transmitting the content to the second user device. 7.The computer-implemented method of claim 6, wherein the time delay isbased on an expected number of nodes between the first device and anoriginal source of the content.
 8. The computer-implemented method ofclaim 7, further comprising: calculating a request time delay based on afirst timestamp associated with a time that the request was transmittedby the first user device and a second timestamp associated with a timethat the request was received at the first device; calculating aretrieval time delay based on a measured time between when the initialrequest was transmitted to the second device and when the content wasreceived from the second device; and determining the expected number ofnodes between the first device and the original source of the contentbased on the request time delay and the retrieval time delay.
 9. Thecomputer-implemented method of claim 1, further comprising generatingthe time delay randomly within a predetermined range.
 10. A computingdevice, comprising: a memory that includes instructions; and a processorcoupled to the memory and, when executing the instructions, isconfigured to: receive a request for content from a user device, whereina cached version of the content is stored locally, determine that theuser device has not previously requested the content from the computingdevice, initiate a time delay in response to determining that the userdevice has not previously requested the content from the computing; andtransmit the cached version of the content to the user device once thetime delay has terminated.